﻿using app.Common;
using HLVControl.Grid;
using HLVControl.Grid.Data;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.EntityClient;
using System.Data.Objects.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace eService.BLL
{
    //GROUPEMPLOYEE
    public class ExcuteNHOMNHANVIEN
    {
        eServiceEntities dbEntities;
        IExecuteData<GROUPEMPLOYEE> Execute;
        public string ErrMsg { get; set; }
        public bool KQ { get; set; }

        public ExcuteNHOMNHANVIEN()
        {
            dbEntities = ConnectionProvider.getDbEntities();
            Execute = new ExecuteData<GROUPEMPLOYEE>(dbEntities);
        }
        public List<GROUPEMPLOYEE> GetAll()
        {
            List<GROUPEMPLOYEE>  list = (List<GROUPEMPLOYEE>)Execute.GetAll();
            if (list != null && list.Count>0) KQ = true;
            return list;
        }
        public GROUPEMPLOYEE GetByID(string ID)
        {
            GROUPEMPLOYEE u = Execute.GetById(ID);
            if (u != null) KQ = true;
            return u;
        }
        public bool Add(GROUPEMPLOYEE Newobj)
        {
            KQ = false;
            if (Newobj != null)
            {
                KQ = Execute.Insert(Newobj);
                if (KQ)
                    ErrMsg = "Thêm nhóm nhân viên mới thành công!";
                else
                    ErrMsg = "Không thể thêm nhóm nhân viên mới!";
            }
            else
            {
                ErrMsg = "Vui lòng nhập thông tin đầy đủ!";
            }
            return KQ;
        }
        public bool UpDate(GROUPEMPLOYEE obj)
        {
            KQ = false;
            if (obj != null)
            {
                GROUPEMPLOYEE obj1 = dbEntities.GROUPEMPLOYEEs.Find(obj.GeID);
                if (obj1 != null)
                {
                    KQ = Execute.Update(obj, obj1);
                    if (KQ)
                        ErrMsg = "Cập nhật nhóm nhân viên thành công!";
                    else
                        ErrMsg = "Không thể cập nhật nhóm nhân viên !";
                }
            }
            else
            {
                ErrMsg = "Vui lòng chọn nhóm nhân viên!";
            }
            return KQ;
        }
        public bool Delete(GROUPEMPLOYEE obj)
        {
            KQ = false;
            if (obj != null)
            {
                GROUPEMPLOYEE obj1 = dbEntities.GROUPEMPLOYEEs.Find(obj.GeID);
                if (obj1 != null)
                {
                    KQ = Execute.Delete(obj1);
                    if (KQ)
                        ErrMsg = "xoá nhóm nhân viên thành công!";
                    else
                        ErrMsg = "Không thể xoá nhóm nhân viên!";
                }
            }
            else
            {
                ErrMsg = "Vui lòng chọn nhóm nhân viên !";
            }
            return KQ;
        }
        public GROUPEMPLOYEE LoadValues(string Ma, string Ten, short DouuTien,bool SuDung)
        {
            KQ = false;
            GROUPEMPLOYEE obj = new GROUPEMPLOYEE();
            if (Ten != "")
            {
                obj.GeID = Ma;
                obj.GeName = Ten;
                obj.GeOrderBy = DouuTien;
                obj.IsUse = SuDung;
                KQ = true;
            }
            else
            {
                obj = null;
                ErrMsg = "Vui lòng điền tên nhóm nhân viên!";
            }
            return obj;
        }

        public DataTable ToDataTable(List<GROUPEMPLOYEE> list)
        {
            DataTable dtData = Execute.ToDataTable<GROUPEMPLOYEE>(list);
            return dtData;
        }
        public bool LoadToTreeview(TreeListView treeview, List<GROUPEMPLOYEE> list)
        {
            KQ = false;
            treeview.Rows.Clear();
            int count = 1;
            foreach (GROUPEMPLOYEE obj in list)
            {
                TreeListRow row = treeview.CreateRow();
                row.Cells.Add(new TreeListCell(count));
                row.Cells.Add(new TreeListCell(obj.GeID));
                row.Cells.Add(new TreeListCell(obj.GeName));
                row.Cells.Add(new TreeListCell(obj.GeOrderBy));
                row.Cells.Add(new TreeListCell(obj.EMPLOYEEs.Count));
                if ((bool)obj.IsUse) row.Cells.Add(new TreeListCell("SĐ"));
                else row.Cells.Add(new TreeListCell("-"));

                treeview.Rows.Add(row);
                count++;
                KQ = true;
            }
            treeview.Refresh();
            if (!KQ)
                ErrMsg = "Không thể tải dữ liệu!";
            return KQ;
        }
    }
}
